package com.nextel.project.usuario.mvc;

import com.nextel.project.Configuracion;
import com.nextel.project.canje.ControlCanje;
import com.nextel.project.cobranza.ControlCobranza;
import com.nextel.project.devolucion.ControlDevolucion;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.usuario.ControlUsuario;
import com.nextel.ui.Key;
import com.nextel.ui.OHandset;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OScrollList;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.ODialogListener;
import javax.microedition.lcdui.Image;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;

/**
 *
 *
 */
public class MVCEnvio extends MVCAction implements ODialogListener, OListenerKey {

    private OScrollList lstMenu;
    private OSoftKey cmdSeguir,  cmdExit;
    private boolean flagForm;
    int indiceSelection;

    protected void createView() {

        cmdSeguir = new OSoftKey(Configuracion.BOTON_SEGUIR);
        cmdExit = new OSoftKey(Configuracion.BOTON_ATRAS);

        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ENVIOS), OUILook.PLAIN_SMALL_TITLE);//"Env\u00EDos"

        formulario.addSoftKey(cmdSeguir);
        formulario.addSoftKey(cmdExit);
    }

    protected void createItems() {

        flagForm = true;
        try {
            String[] options = obtenerListaDatos();

            Image[] images = new Image[5];
            Image img = Image.createImage("/envioItem.PNG");
            images[0] = img;
            images[1] = img;
            images[2] = img;
            images[3] = img;
            images[4] = img;

            lstMenu = new OScrollList(formulario.getWidth(), formulario.getBodyHeight(),
                    OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
            lstMenu.isWithBorder = false;
            lstMenu.populate(options);
            lstMenu.setImages(images, formulario.getBodyHeight());

            lstMenu.listenerKey = this;

            formulario.add(lstMenu);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void performAction(OSoftKey c) {
        if (c == cmdExit) {
            destroy();
            ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu.showScreen());
        } else if (c == cmdSeguir) {
            performKey(lstMenu.getSelectedIndex() + 1);
        }
    }

    public void performKey(int indx) {

        if (flagForm) {
            if (indx == Key.Key_OK) {
                indx = lstMenu.getSelectedIndex() + 1;

            }
            indiceSelection = indx;
            //System.out.println("indiceSelection= " + indiceSelection);

            seleccionar(indx);

        }
    }

    public void botonOK() {

        if (flagForm) {
            seleccionarValor(indiceSelection);
        }
    }

    public void botonCancel() {
        OHandset.getDisplay().setCurrent(formulario);
    }

    public String[] obtenerListaDatos() throws Exception {

        String permiso = "1";
        List lista = new ArrayList();

        lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_TODO));//"Todo"

        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PEDIDOS));//"Pedi/No Pedi"

        }
        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.devolucion)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_DEVOLUCIONES)); //Devolucion

        }
        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.canje)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CANJES));//Canjes

        }
        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.cobranza)) {
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_PAGOS));//"Pagos"

        }



        String[] datos = new String[lista.size()];

        for (int i = 0; i < lista.size(); i++) {
            datos[i] = (i + 1) + ". " + (String) lista.get(i);

        }

        return datos;

    }

    private void seleccionar(int i) {

        String permiso = "1";
        int indice = 1; // el primero corresponde con el envio de todos sino indice = 0

        List lst = null;

        int numPedidosPendientes = ControlPedido.getInstance().getNumeroPedidoPendientes();
        int numDevolucionesPendientes = ControlDevolucion.getInstance().getNumeroDevolucionesPendientes();
        int numCanjesPendientes = ControlCanje.getInstance().getNumeroCanjesPendientes();
        int numPagosPendientes = ControlCobranza.getInstance().getNumeroPagosPendientes();

        int numTotalesPendientes = 0;
        numTotalesPendientes = numCanjesPendientes + numDevolucionesPendientes + numPagosPendientes + numPedidosPendientes;


        if (indice == i) {

            
            if (numTotalesPendientes <= 0) {

                ControlUsuario.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_NOENVIARA_TODOS), this.formulario);
                flagForm = true;
                return;
            }
            ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_TODOS), this, formulario);

        }


        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
            indice++;
            if (indice == i) {

                if (numPedidosPendientes <= 0) {
                    ControlUsuario.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_NOENVIARA_PEDIDOS), this.formulario); // //"ATENCION: No hay pedidos/no pedidos pendientes de env\u00EDo."

                    flagForm = true;
                    return;
                }
                ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_PEDIDOS), this, formulario); // //"ATENCION: Se enviaran los pedidos/no pedidos pendientes de env\u00EDo. \u00BFDesea continuar?",

            }

        }
        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.devolucion)) {
            indice++;
            if (indice == i) {

                if (numDevolucionesPendientes <= 0) {
                    ControlUsuario.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_NOENVIARA_DEVOLUCION), this.formulario);//ATENCION: No hay Devoluciones pendientes de env\u00EDo

                    flagForm = true;
                    return;
                }
                ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_DEVOLUCIONES), this, formulario); // //"ATENCION: Se enviaran las devoluciones pendientes de env\u00EDo. \u00BFDesea continuar?"

            }
        }

        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.canje)) {
            indice++;
            if (indice == i) {
                if (numCanjesPendientes <= 0) {
                    ControlUsuario.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_NOENVIARA_CANJES), this.formulario); //"ATENCION: No hay Canjes Pendientes de env\u00EDo"

                    flagForm = true;
                    return;
                }

                ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_CANJES), this, formulario); // //"ATENCION: Se enviaran los canjes pendientes de env\u00EDo. \u00BFDesea continuar?",

            }
        }

        if (permiso.equals(ControlUsuario.getInstance().currentUsuario.cobranza)) {
            indice++;
            if (indice == i) {
                if (numPagosPendientes <= 0) {
                    ControlUsuario.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_NOENVIARA_PAGOS), this.formulario);//"ATENCI\u00D3N: No hay pagos pendientes de env\u00EDo"

                    flagForm = true;
                    return;
                }
                ControlUsuario.getInstance().showConfirmacion(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATENCION_ENVIARA_PAGOS), this, formulario); // //"ATENCI\u00D3N: Se enviar\u00E1n los Pagos pendientes de env\u00EDo. \u00BFDesea continuar?"

            }
        }


    }

    private void seleccionarValor(int i) {

        String permiso = "1";
        int indice = 1; // el primero corresponde con el envio de todos sino indice = 0

        try {

            if (indice == i) {
                flagForm = false;
                destroy();
                ControlUsuario.getInstance().enviarTodos();
            }


            if (permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)) {
                indice++;
                if (indice == i) {
                    flagForm = false;
                    destroy();
                    ControlPedido.getInstance().enviarPedidoTotal(true);
                }
            }


            if (permiso.equals(ControlUsuario.getInstance().currentUsuario.devolucion)) {
                indice++;
                if (indice == i) {
                    flagForm = false;
                    destroy();
                    ControlDevolucion.getInstance().mvcProductoBusqueda.setBusquedaMVC(ControlDevolucion.getInstance().getBusquedaMVC());
                    ControlDevolucion.getInstance().enviarDevolucionTotal();
                }
            }

            if (permiso.equals(ControlUsuario.getInstance().currentUsuario.canje)) {
                indice++;
                if (indice == i) {
                    flagForm = false;
                    destroy();
                    ControlCanje.getInstance().mvcProductoBusqueda.setBusquedaMVC(ControlCanje.getInstance().getBusquedaMVC());
                    ControlCanje.getInstance().enviarCanjeTotal();
                }
            }

            if (permiso.equals(ControlUsuario.getInstance().currentUsuario.cobranza)) {
                indice++;
                if (indice == i) {
                    flagForm = false;
                    destroy();
                    ControlCobranza.getInstance().enviarPagoTotal();
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}
